\documentclass[9pt,twocolumn,times]{article}

\usepackage{color}
\usepackage{caption}
\usepackage{float}
\usepackage{courier}
\usepackage{xspace}
\usepackage{url}
\usepackage{listings}
\usepackage{graphicx}
\usepackage{mdframed}
\usepackage[letterpaper, margin=1in]{geometry}
\usepackage{enumitem}
\usepackage[compact]{titlesec}

\setitemize{noitemsep,topsep=0pt,parsep=0pt,partopsep=0pt,leftmargin=.5cm}
\setlist[itemize]{noitemsep,topsep=0pt,parsep=0pt,partopsep=0pt,leftmargin=.5cm}
\setlist[enumerate]{noitemsep,topsep=0pt,parsep=0pt,partopsep=0pt,leftmargin=.5cm}
\setlist[description]{noitemsep,topsep=0pt,parsep=0pt,partopsep=0pt,leftmargin=.5cm}

\lstset{
  language=C,
  basicstyle=\ttfamily\footnotesize,
  frame=lrbt,
  morekeywords={action,apply,bit,bool,%
const,control,default,else,%
enum,error,extern,exit,%
false,header,header_union,if,%
in,inout,int,match_kind,%
package,parser,out,return,%
select,state,struct,switch,%
table,transition,true,tuple%
typedef,varbit,verify,void,%
%
abstract,interface,class,virtual% used for IR
}
}

\newcommand{\code}[1]{\texttt{#1}}
\newcommand{\keyword}[1]{{\bf \texttt{#1}}}
\newcommand{\vonemodel}{\code{v1model}\xspace}
\newcommand{\mycomment}[1]{}

\title{Linux Network Programming with P4}
\author{William Tu\\
  VMware Inc.\\
  \texttt{tuc@vmware.com}
  \and
  Fabian Ruffy\\
  University of British Columbia\\
  \texttt{fruffy@cs.ubc.ca}
  \and
  Mihai Budiu\\
  VMware Research\\
  \texttt{mbudiu@vmware.com}
}
\date{}

\begin{document}
\maketitle

\begin{abstract}
  P4 is a domain-specific language for implementing network data-planes.
  The P4 abstraction allows programmers to write network protocols in a 
  generalized fashion, without needing to know the configuration specifics
  of the targeted data-plane.
  
  The extended Berkely Packet Filter (eBPF) is a safe virtual machine for 
  executing sand-boxed programs in the Linux kernel. eBPF, and its extension 
  the eXpress Data Path (XDP), effectively serve as programmable data-planes of 
  the kernel.

  P4C-XDP is a project combining the performance of XDP with the generality and 
  usability of P4. In this document, we describe how P4 can be 
  translated into eBPF/XDP. We review the fundamental limitations of both 
  technologies, analyze the performance of several generated XDP programs, and 
  discuss problems we have faced while working on this new technology.
  
\end{abstract}


\input{introduction}
\input{background}
\input{compilation}
\input{testing}
\input{results}
\input{conclusions}

\bibliography{top}
\bibliographystyle{acm}

\end{document}
